<?php
	class Perfil_controller extends Base_controller 
	{
		
		function __construct($registry)
		{
			parent::__construct($registry);
		
			// Cargar models requeridos
			$this->registry->usuario_model = new Usuario_model();
			$this->registry->departamento_model = new Departamento_model();
			$this->registry->pais_model = new Pais_model();
			$this->registry->contrato_model = new Contrato_model();
			$this->registry->tecnico_tipo_servicio_model = new Tecnico_tipo_servicio_model();
			$this->registry->tipo_servicio_model = new Tipo_servicio_model();
			$this->registry->evaluacion_model = new Evaluacion_model();
			$this->registry->imagen_model = new Imagen_model();
		}
		
		function index()
		{	
			$usuario = get_user_auth();

			$this->registry->template->servicios_del_tecnico = $this->registry->tecnico_tipo_servicio_model->getTipoServiciosporTecnico($usuario['id']);
			
			$this->registry->template->lista_servicios = $this->registry->tipo_servicio_model->getAll();
			
			$this->registry->template->usuario = $this->registry->usuario_model->get($usuario['id']);

			$this->registry->template->departamentos = $this->registry->departamento_model->getAll();

			$this->registry->template->paises = $this->registry->pais_model->getAll();
			
			$this->registry->template->contratos = $this->registry->contrato_model->getContratosInfoPorUsuario($usuario['id'], $usuario['tipo']);
			
			$this->registry->template->view = 'perfil';
			$this->registry->template->show('layout');
			
			
		}
		
		function ajaxValorarContrato()
		{
			$idContrato = $_POST['idContrato'];
			$puntuacion = $_POST['puntuacion'];
			$evaluado = $_POST['evaluado']; //email
			$evaluador = get_user_auth();
			
			$usuario_evaluado = $this->registry->usuario_model->getByEmail($evaluado);
			
			$this->registry->evaluacion_model->evaluador_fk = $evaluador['id'];
			$this->registry->evaluacion_model->evaluado_fk = $usuario_evaluado['id'];
			$this->registry->evaluacion_model->puntuacion = $puntuacion; 
			$this->registry->evaluacion_model->contrato_fk = $idContrato;
			
			$this->registry->evaluacion_model->insert();
		}
		
		function ajaxValidatePassword()
		{
			$validateValue=sha1($_REQUEST['fieldValue']);
			$validateId=$_REQUEST['fieldId'];
			
			$usuario = get_user_auth();
			
			$arrayToJs = array();
			$arrayToJs[0] = $validateId;
			
			if ($this->validarPasswordUsuario($usuario, $validateValue))
			{
				$arrayToJs[1] = true;
			}
			else
			{
				$arrayToJs[1] = false;
			}
			
			echo json_encode($arrayToJs);
		}
		
		
		function guardarPassword()
		{
			$usuariologueado = get_user_auth();
			
			$nuevoPassword = sha1($_POST['pass_nuevo']);
			
			//obtengo usuario de la base.
			$usuario = $this->registry->usuario_model->get($usuariologueado['id']);
			//actualizo password
			$usuario['password'] = $nuevoPassword;
			
			$this->usuarioToModel($usuario);
			
			$this->registry->usuario_model->update($usuario['id']);
			
			//guardo usuario con datos actualizados en sesion
			set_user_auth($usuario);
			
			$this->index();
		}
		
		
		/**
		 *
		 * @param  $usuario
		 * @param  $password
		 * @return boolean
		 *
		 * Valida si el password (pasado por parametro) es igual al del usuario
		 * pasado por parametro.
		 */
		function validarPasswordUsuario($usuario, $password)
		{		
			if ($usuario['password'] == $password)
			{
				return true;
			}
			else return false;
		}
		
		function modificar()
		{
			$usuario = get_user_auth();
			
			$this->postToModelUsuario();
			
 			$this->registry->usuario_model->id = $usuario['id'];
 			
			$this->registry->usuario_model->update($usuario['id']);
			
			$usu_modificado = $this->registry->usuario_model->get($usuario['id']);
			
			//Seteo el usuario con valores modificados en sesion.
			set_user_auth($usu_modificado);
			
			$this->index();
		}
		
		function actualizar_servicios_del_tecnico()
		{
			$usuario = get_user_auth();
			
			if (isset($_POST['lista_tipos']) && isset($_POST['precios']))
			{
				$lista_tipos = $_POST['lista_tipos'];			
				$precios = $_POST['precios'];
				
				for($i = 0; $i < sizeof($lista_tipos); $i++)
				{	
					if(isset($lista_tipos[$i]) && isset($precios[$i]))
					{
						$current_tts = $this->registry->tecnico_tipo_servicio_model->getByTecnicoYTipoServicio($usuario['id'], $lista_tipos[$i]);
						
						// Si no existe la relacion la creo
						if(!$current_tts)
						{
							$new_tts = new Tecnico_tipo_servicio_model();
							
							$new_tts->tecnico_fk = $usuario['id'];
							$new_tts->tipo_servicio_fk = $lista_tipos[$i];
							$new_tts->precio_hora = $precios[$i];		
							$new_tts->insert();
						}
						
						// Si existe modifico el precio
						else
						{
							$update_tts = new Tecnico_tipo_servicio_model();
							$update_tts->id = $current_tts['id'];
							$update_tts->tecnico_fk = $current_tts['tecnico_fk'];
							$update_tts->tipo_servicio_fk = $current_tts['tipo_servicio_fk'];
							$update_tts->precio_hora = $precios[$i];		
							$update_tts->update();
						}
					}
				}
			}					
			$this->index();
		}
		
		/**
		 * Se mapean los valores del obtenidos del POST al model del
		 * usuario.
		 * El id se trata de manera diferente. Hay que setearlo por fuera de esta funcion.
		 */
		function postToModelUsuario()
		{
			$this->registry->usuario_model->documento = $_POST ["documento"];
			$this->registry->usuario_model->nombres = $_POST ["nombres"];
			$this->registry->usuario_model->apellidos = $_POST ["apellidos"];
			$this->registry->usuario_model->email = $_POST ["email"];
			$this->registry->usuario_model->password = $_POST ["password"];
			$this->registry->usuario_model->pais_fk = $_POST ["pais_fk"];
			$this->registry->usuario_model->departamento_fk = $_POST ["departamento_fk"];
			$this->registry->usuario_model->barrio = $_POST ["barrio"];
			$this->registry->usuario_model->direccion = $_POST ["direccion"];
			$this->registry->usuario_model->celular = $_POST ["celular"];
			$this->registry->usuario_model->tipo = $_POST ["tipo"];
			$this->registry->usuario_model->activo = $_POST["activo"];
			$this->registry->usuario_model->coordenadas = $_POST ["coordenadas"];
		}
		
		/**
		 * @param $usuario
		 * Se mapea el usuario pasado por parametro al modelo.
		 */
		function usuarioToModel($usuario)
		{
			$this->registry->usuario_model->id = $usuario['id'];
			$this->registry->usuario_model->documento = $usuario["documento"];
			$this->registry->usuario_model->nombres = $usuario["nombres"];
			$this->registry->usuario_model->apellidos = $usuario["apellidos"];
			$this->registry->usuario_model->email = $usuario["email"];
			$this->registry->usuario_model->password = $usuario["password"];
			$this->registry->usuario_model->pais_fk = $usuario["pais_fk"];
			$this->registry->usuario_model->departamento_fk = $usuario["departamento_fk"];
			$this->registry->usuario_model->barrio = $usuario["barrio"];
			$this->registry->usuario_model->direccion = $usuario["direccion"];
			$this->registry->usuario_model->celular = $usuario["celular"];
			$this->registry->usuario_model->tipo = $usuario["tipo"];
			$this->registry->usuario_model->activo = $usuario["activo"];
			$this->registry->usuario_model->coordenadas = $usuario["coordenadas"];
		}
	
		function cargarImg()
		{
			$idContrato = $_POST['idContrato'];
			$this->registry->template->imagen = $this->registry->imagen_model->getPorContrato($idContrato);	
		}	
	}
?>